/*
 * TCSS 422 Process Control Simulator
 * Group Money: Al McKenzie, Michael Pitts, Taylor Zielske
 */

/**
 * The Object representing a Process that can be run.
 * 
 * @author Michael Pitts
 * @version Nov 22, 2011
 */
public interface Process {
	
	/**
	 * Gets this process's ID.
	 * @return the integer id.
	 */
	public int getID();
	
	/**
	 * Runs one cycle for the given Process.  May return a system call if the Process
	 * needs to make one.
	 * @return the SysCall needed by the Process, or null if no SysCall is needed.
	 */
	public SysCall run();
	
	/**
	 * Gets the status of this Process.
	 * @return the current status of this Process.
	 */
	public Status getStatus();
	
	/**
	 * Gets which IO device this Process is waiting on.
	 * @return the IODevice this process needs to continue.
	 */
	public IODevice getWaitingOn();

	/**
	 * Sets the status for this Process.
	 * @param the_status is the new status for this Process.
	 */
	public void setStatus(final Status the_status);
}
